Fan out display-name rename to every cohort (ARB-513)#390
Merged
Conversation
…llisions (ARB-513) Renaming a user's global display name now propagates to every non-read-only cohort they're in. Collisions with other accounts in a cohort are resolved by appending the smallest available `-N` suffix, surfaced to the user through a preflight/confirmation flow so they consent to any suffix before it's applied. Fixes ARB-513
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
briansmiley
added a commit
that referenced
this pull request
Apr 14, 2026
Reverts commits 7cd390c..c5f4008 (15 commits) to restore the pre-multi-cohort state. Critical event tomorrow — rolling back to last known stable state. Reverted commits: - 7cd390c Multi-cohort support with per-member initial balance (#358) - 1a9259e Allow sudoed admins higher decimal precision (#370) - 612f7e7 Add select all / clear buttons to transfer recipient multiselect (#350) - ec96705 Link cohort members to existing users when added by email (#378) - eed7a73 Consolidate admin page data loading into single /api/admin/overview (#381) - eac92d0 Populate global user display name from id_token on login (ARB-515) (#380) - c5461ee Remove redundant Refresh button from /admin page (#382) - 77168e3 Sync Kinde admin role into global_user.is_admin (ARB-512) (#379) - 685ee0c Remove dead get_market_positions and fix 0.5.0 ImportError (#385) - e9d49f7 Constrain initial balance inputs to numeric values (#383) - 95ff300 Stop overwriting global_user display_name on admin REST calls (#386) - 0163100 Show user email on admin page while editing display name (#387) - 85f2c5f Fix user selection dropdown hover when multiple users have same name (#388) - 3fedb38 Add admins to cohort member list on access (ARB-510) (#389) - c5f4008 Fan out display-name rename to every cohort (ARB-513) (#390) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
briansmiley
added a commit
that referenced
this pull request
Apr 14, 2026
Reverts commits 7cd390c..c5f4008 (15 commits) to restore the pre-multi-cohort state. Critical event tomorrow — rolling back to last known stable state. Reverted commits: - 7cd390c Multi-cohort support with per-member initial balance (#358) - 1a9259e Allow sudoed admins higher decimal precision (#370) - 612f7e7 Add select all / clear buttons to transfer recipient multiselect (#350) - ec96705 Link cohort members to existing users when added by email (#378) - eed7a73 Consolidate admin page data loading into single /api/admin/overview (#381) - eac92d0 Populate global user display name from id_token on login (ARB-515) (#380) - c5461ee Remove redundant Refresh button from /admin page (#382) - 77168e3 Sync Kinde admin role into global_user.is_admin (ARB-512) (#379) - 685ee0c Remove dead get_market_positions and fix 0.5.0 ImportError (#385) - e9d49f7 Constrain initial balance inputs to numeric values (#383) - 95ff300 Stop overwriting global_user display_name on admin REST calls (#386) - 0163100 Show user email on admin page while editing display name (#387) - 85f2c5f Fix user selection dropdown hover when multiple users have same name (#388) - 3fedb38 Add admins to cohort member list on access (ARB-510) (#389) - c5f4008 Fan out display-name rename to every cohort (ARB-513) (#390) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
global_user.display_nameplus every non-read-only cohort'saccount.namein one shot, via a sharedapply_user_renamehelper used by bothPUT /api/users/me/display-nameandPUT /api/admin/users/:id/display-name.-Ncollision suffixes. When a cohort already has an account with the target name, the backend picks the smallest available-2/-3/… suffix. The old-g{global_user_id}scheme inensure_user_created_by_global_idis gone.409 { status: 'needs_confirmation', conflicts: [...] }and writes nothing. The frontend opens anAlertDialoglisting the suggested per-cohort names; on confirm it resubmits with aconfirmed_overridesmap. A TOCTOU race during commit bubbles back out as a plain 409 — the client retries from scratch.400 "Display name unchanged", so a double-click doesn't ratchet suffixes.SM::Accounts { accounts: [updated] }viacohort.subscriptions.send_public(...). The frontend handler formsg.accountshad a latent bug (it cleared the whole map before looping, so single-element broadcasts wiped out state); fixed to upsert. Full resets still happen throughresetServerState()on disconnect.Name: Theo Reinsbergline when the current cohort's account name matches the global name, and two lines (Name for {cohort}: Theo Reinsberg-2+Name: Theo Reinsberg) when they diverge. Only the global name is editable; the edit prefills from the global name, not the suffixed cohort-local one.GET /api/users/mereturning{ id, display_name, email, is_admin }for the caller, so the accounts page can show the global name even when it differs from the current cohort'saccount.name.-g{N}-style cohort account names from earlier code paths aren't rewritten; a subsequent rename clears them out naturally. Also removes a stale top-levelDEPLOY.mdthat was already unused.Fixes ARB-513
Test plan
cd backend && cargo clippy --features dev-mode --tests -- -D warnings— no warnings (verified locally)cd backend && cargo test-all— all 62 tests pass (verified locally)cd frontend && pnpm run check && pnpm run lint— 0 errors (verified locally)main, rename her to "Bob" (no collision). Expect singleName: Bobline, other connected clients see the rename live.willow, then as Alice submit a rename to "Bob". Expect the confirmation modal listingWillow: Bob-2. Confirm → main showsName: Bob, willow shows two lines (Name for willow: Bob-2/Name: Bob).Bob→Bob) — expect400 "Display name unchanged".